package io.xiyou.order.api.dto;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * order
 *
 * @author
 */
@ApiModel(value = "generate.Order订单表")
@Data
public class OrderDTO implements Serializable {
    /**
     * 订单号
     */
    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty(value = "订单号")
    private Long orderCode;

    /**
     * 商品ID
     */
    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty(value = "商品ID")
    private Long productId;

    /**
     * 用户ID
     */
    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty(value = "用户ID")
    private Long userId;

    /**
     * 邀请用户ID
     */
    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty(value = "邀请用户ID")
    private Long inviteUserId;

    /**
     * 原价
     */
    @ApiModelProperty(value = "原价")
    private BigDecimal originalPrice;

    /**
     * 优惠金额
     */
    @ApiModelProperty(value = "优惠金额")
    private BigDecimal discountsPrice;

    /**
     * 支付金额
     */
    @ApiModelProperty(value = "支付金额")
    private BigDecimal payPrice;

    /**
     * 收货人姓名
     */
    @ApiModelProperty(value = "收货人姓名")
    private String receiveName;

    /**
     * 收货人手机号
     */
    @ApiModelProperty(value = "收货人手机号")
    private String receivePhone;

    /**
     * 收货人地址
     */
    @ApiModelProperty(value = "收货人地址")
    private String receiveAddress;

    /**
     * 支付方式（wechat_app-微信APP支付，wechat_h5-微信H5支付，alipay-支付宝支付，mini_program-小程序支付）
     */
    @ApiModelProperty(value = "支付方式（wechat_app-微信APP支付，wechat_h5-微信H5支付，alipay-支付宝支付，mini_program-小程序支付）")
    private String payType;

    /**
     * 来源：l:APP-I0S；2:APP-Android；3:H5
     */
    @ApiModelProperty(value = "来源：l:APP-I0S；2:APP-Android；3:H5")
    private Integer source;

    /**
     * 支付时间
     */
    @ApiModelProperty(value = "支付时间")
    private Date payDate;

    /**
     * 完成时间
     */
    @ApiModelProperty(value = "完成时间")
    private Date completeDate;

    /**
     * 订单状态：1-待支付；2-已支付；3-待发货；4-已发货；5-已完成；6-已失效；
     */
    @ApiModelProperty(value = "订单状态：1-待支付；2-已支付；3-待发货；4-已发货；5-已完成；6-已失效；")
    private Integer orderStatus;

    /**
     * 创建者
     */
    @ApiModelProperty(value = "创建者")
    private String createBy;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    private Date createDate;

    /**
     * 更新者
     */
    @ApiModelProperty(value = "更新者")
    private String updateBy;

    /**
     * 更新时间
     */
    @ApiModelProperty(value = "更新时间")
    private Date updateDate;

    /**
     * 备注信息
     */
    @ApiModelProperty(value = "备注信息")
    private String remarks;

    /**
     * 删除标记:0-未删除；1-已删除
     */
    @ApiModelProperty(value = "删除标记:0-未删除；1-已删除")
    private Integer delFlag;

    private static final long serialVersionUID = 1L;
}